320 ON A GOTO 1000,2000,3000,4000,5000,6000,7000,8000,9000
500 HOME
510 PRINT " THIS IS THE SECOND PART OF A THE ": PRINT "NIBBLE LIBRARIAN SYSTEM. WHILE THE": PRINT "PROGRAM 'CATALOGER' CREATES THE INITIAL": PRINT "DATA BASE BY READING CATALOGS, THIS"
520 PRINT "PART DOES THE ACTUAL MANAGEMENT."
530 PRINT : PRINT " THE PROGRAM IS MENU DRIVEN AND ": PRINT "ALLOWS THE USER TO COMBINE DATA BASES,": PRINT "ADD OR DELETE OR EDIT OR SORT ENTRIES,": PRINT "AND PRINT OUT THE MASTER CATALOG. THE "
540 PRINT "CATALOG MAY CONTAIN UP TO 700 ENTRIES."
550 PRINT : PRINT " THE SORT ROUTINE ALLOWS SORTING BY": PRINT "VOLUME, FILETYPE, OR FILENAME."
560 PRINT : PRINT " THE PRINT ROUTINE ALLOWS FOR TWO": PRINT "OPTIONS -- SCREEN AND PRINTER. THE": PRINT "PRINTER OPTION MAY NEED TO BE REVISED": PRINT "TO WORK WITH YOUR PRINTER."
570 VTAB 23: PRINT "PRESS RETURN TO CONTINUE ";Z$;: GET A$: PRINT A$
580 HOME : PRINT " IF BY MISTAKE YOU SHOULD EXIT THE ": PRINT "PROGRAM (BY AN ILLEGAL ENTRY?) YOU MAY": PRINT "RE-ENTER THE PROGRAM WITH 'GOTO 10000'."
590 PRINT : PRINT " THIS WILL NOT WORK IF YOU MAKE A": PRINT "NORMAL EXIT VIA THE MENU BECAUSE THERE": PRINT "WILL HAVE BEEN A CHANGE IN THE NUMBER": PRINT "OF FILE BUFFERS (MAXFILES)."
600 PRINT : PRINT " MOST ANSWERS TO QUESTIONS REQUIRE A": PRINT "SINGLE KEYSTROKE AND NO RETURN. THIS": PRINT "IS INDICATED BY CHOICES IN BRACKETS <>.": PRINT "ILLEGAL ENTRIES WILL BE TRAPPED AND YOU"
610 PRINT "WILL BE PROMPTED TO RESPOND AGAIN."
620 VTAB 23: PRINT "PRESS RETURN TO CONTINUE ";Z$;: GET A$: GOTO 200
700 CALL 768
710 PRINT : PRINT D$;"CLOSE":Y = PEEK(222)
720 IF Y = 5 THEN PRINT B$;"PREMATURE END OF DATA ON FILE ";F$: PRINT "CANNOT READ MORE.":N = N +I -1:NUM = NUM +I -1: CALL -958: GOTO 1070
730 IF Y = 4 THEN PRINT B$;"DISK IS WRITE PROTECTED.": CALL -958: GOTO 800
740 IF Y = 9 THEN PRINT B$;"DISK IS FULL.": CALL -958: GOTO 800
750 IF Y = 10 THEN PRINT B$;"FILE IS LOCKED.": CALL -958: GOTO 800
760 IF Y = 8 THEN PRINT B$;"I/O ERROR.": CALL -958: GOTO 810
770 IF Y = 255 THEN PRINT B$;"CTRL-C INTERRUPT": GOTO 810
780 IF Y = 254 THEN PRINT B$;"NUMERICAL ENTRY EXPECTED": PRINT : RESUME
790 PRINT B$;"APPLESOFT OR DOS ERROR NUMBER ";Y;" HAS": PRINT "OCCURRED. SEE PAGE 81 OF APPLESOFT": PRINT "REFERENCE MANUAL AND PAGE 200 OF DOS": PRINT "MANUAL FOR LIST OF ERROR CODES.": GOTO 810
800 PRINT : PRINT "REPLACE DISK IN DRIVE 1 IF NEEDED.": PRINT : PRINT "PRESS RETURN TO CONTINUE ";Z$;: GET A$: GOTO 2000
810 PRINT : PRINT "PRESS RETURN TO GO TO MAIN MENU ";Z$;: GET A$
820 GOTO 200
1000 HOME
1010 PRINT " GET MASTER CATALOG"
1020 PRINT : PRINT "WHAT IS NAME OF CATALOG FILE? (ENTER *": PRINT : PRINT "TO ABORT OR @ TO LIST CATALOG OF MASTER": PRINT : PRINT "DISK.) ";: INPUT F$
1030 IF LEN(F$) = 0 THEN PRINT B$;: GOTO 1010
1040 IF F$ = "*" GOTO 200
1050 IF F$ < >"@" THEN 1080
1060 PRINT CA$",D1"
1070 PRINT : PRINT "PRESS RETURN TO CONTINUE ";Z$;: GET A$: PRINT : PRINT : PRINT : GOTO 1010
2180 VTAB 23: PRINT "PRESS RETURN TO CONTINUE ";B$;Z$;: GET A$: GOTO 200
3000 HOME
3010 PRINT " SORT MASTER CATALOG"
3020 VTAB 4: PRINT " A STANDARD SORT IS DOUBLE -- PRIMARY": PRINT "BY FILENAME AND SECONDARY BY VOLUME."
3030 PRINT : PRINT "YOU MAY MAKE A CUSTOM SORT BY USING": PRINT "OPTIONS 2,3,AND 4. IF YOU WANT BOTH A": PRINT "PRIMARY AND SECONDARY SORT, DO THE": PRINT "SECONDARY SORT FIRST."
4140 IF PT = 2 THEN PRINT : PRINT B$;"BE SURE TO POSITION PAPER AT THE TOP OF": PRINT "A SHEET WITH THAT DEFINED AS 'TOF'.": PRINT "(TURN PRINTER OFF AND ON TO BE SURE.)"
4200 PRINT : PRINT " CHOICE? ";Z$;: GET A$: PRINT A$:A = ASC(A$) -48: IF A <1 OR A >3 THEN PRINT B$;: GOTO 4200
4210 IF A = 2 THEN PRINT : PRINT "WHAT VOL? ";: INPUT VOL$:VOL$ = RIGHT$("000" +VOL$,3):FF$ = "N": IF (B = 2) AND (PT = 2) THEN PRINT : PRINT "DO YOU WANT A FORM FEED BEFORE PRINTING? <Y> <N>: ";Z$;: GET FF$: PRINT FF$
4220 IF A = 3 THEN PRINT : PRINT "WHAT FILETYPE? <A> <B> <I> <R> <S> <T>: ";Z$;: GET T$: PRINT T$
4340 PRINT " ";B$;Z$;: GET A$: IF A$ = CHR$(27) THEN I = NUM: GOTO 4360
4350 PRINT :K = 1
4360 NEXT
4370 POKE 34,0: POKE 35,24: VTAB 23: HTAB 1: PRINT B$;"PRESS RETURN FOR PRINT MENU ";B$;Z$;
4380 GET A$: PRINT : GOTO 4020
4390 PRINT : PRINT "USE '";F$;"' AS PRINT-OUT LABEL?": PRINT "IF YES, PUSH RETURN;": PRINT "ELSE, ENTER AN ALTERNATIVE LABEL.": INPUT LA$: IF LEN(LA$) = 0 THEN LA$ = F$
8250 PRINT : PRINT "COMMAND? ";Z$;: GET A$: PRINT A$
8260 IF A$ = CHR$(13) THEN 8330
8270 IF A$ = "D" THEN 8320
8280 IF A$ = CHR$(27) THEN 8340
8290 IF A$ < >"E" THEN PRINT B$;: GOTO 8250
8300 GOSUB 8360
8310 GOTO 8330
8320 NUM = NUM -1: FOR K = I TO NUM:P%(K) = P%(K +1): NEXT : PRINT : PRINT B$;" DELETED!":C = C +1: PRINT
8330 NEXT
8340 POKE 34,0
8350 GOTO 8010
8360 PRINT : PRINT "HERE IS THE COMPLETE ENTRY. EDIT IT": PRINT "AS YOU WOULD A PROGRAM LINE USING ": PRINT "ESCAPE I,J,K, ETC. BE SURE NOT TO ": PRINT "CHANGE ITS LENGTH OR THE POSITION OF": PRINT "THE FILETYPE OR LENGTH"
8370 PRINT : PRINT " V..NAME..........................T.LEN": REM STRING HAS EXACTLY 40 CHARACTERS
8375 PRINT " ";P$(P%(I));: FOR K = 1 TO LEN(P$(P%(I))) +2: PRINT CHR$(8);: NEXT : INPUT "->";X$
8380 L1 = LEN(X$): IF L1 <38 THEN PRINT : PRINT B$;"TOO SHORT -- TRY AGAIN": GOTO 8370
8390 IF L1 >38 THEN PRINT : PRINT B$;"TOO LONG -- TRY AGAIN": GOTO 8370
8400 P$(P%(I)) = X$: PRINT
8410 RETURN
9000 HOME : PRINT " EXIT"
9005 PRINT : PRINT B$;"BE SURE YOU HAVE SAVED YOUR CATALOG."
9010 PRINT : PRINT "DO YOU WANT TO END OR CONTINUE?"
9020 PRINT : PRINT " 1> EXIT": PRINT " 2> CONTINUE WITH FILER": PRINT " 3> RETURN TO CATALOGER": PRINT